#include "compiler_run.hpp"
#include "../comm/httplib.h"
using namespace ns_compile_and_run;
using namespace ns_util;
using namespace httplib;
// 编译服务随时可能被多个人请求，必须保证传递上来的code，形成源文件名称的时候，要具有
// 唯一性，要不然多个用户之间会互相影响

void Usage(std::string proc)
{
    std::cerr << "Usage" << "\n\t" << proc << "port" << std::endl;
}
int main(int argc, char **argv)
{

    if (argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }

    Server svr;
    //INFO_Log("监听成功");
   
    svr.Post("/compile_and_run", [](const Request &req, Response &resp)
        {
           
        std::string in_json = req.body;
        std::string out_json;
         //INFO_Log("接受成功：%s",in_json.c_str());
        if(!in_json.empty())
        {
            CompileAndRun::Start(in_json, &out_json);
            resp.set_content(out_json, "application/json;charset=utf-8");
            INFO_Log("发送成功\n：%s",out_json.c_str());
        } 
        });


    INFO_Log("监听成功");
    svr.listen("0.0.0.0", atoi(argv[1]));

    return 0;
}



// int main()
// {
//    bool ret= Compiler::Compile("1738758709189_1");
//    int n= Runner::Run("1738758709189_1",1,10000);
//    std::cout<<n<<std::endl;
// }


// #include <jsoncpp/json/json.h>
// #include<iostream>
// int main()
// {
//     Json::Value value;
//     value["1"]="haha";
//     value["2"]=2;

//     Json::StyledWriter writer;
//     std::string s;
//     s=writer.write(value);
//     std::cout<<s<<std::endl;


//     Json::Value value2;
//     Json::Reader reader;
//     reader.parse(s,value2);

//     std::string s2;
//     s2=value2["1"].asString();
//     int a;
//     a=value2["2"].asInt();
//     std::cout<<s2<<"  "<<a<<std::endl;

// }